//package com.ruoyi.common.utils;
//
//import cn.hutool.extra.spring.SpringUtil;
//import com.itextpdf.text.BaseColor;
//import com.itextpdf.text.Document;
//import com.itextpdf.text.DocumentException;
//import com.itextpdf.text.Font;
//import com.itextpdf.text.pdf.BaseFont;
//import com.itextpdf.text.pdf.PdfWriter;
//import com.itextpdf.tool.xml.XMLWorkerFontProvider;
//import com.itextpdf.tool.xml.XMLWorkerHelper;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.velocity.VelocityContext;
//import org.apache.velocity.app.VelocityEngine;
//import org.apache.velocity.tools.generic.DateTool;
//
//import java.io.*;
//import java.net.URLEncoder;
//import java.nio.charset.Charset;
//import java.util.Map;
//
///**
// * HTML转PDF工具类
// *
// * @author: liukewei
// * @data: 2018-08-15
// */
//@Slf4j
//public class ITextUtil {
//
//	/**
//	 * 将velocity模板进行数据渲染并转为PDF byte[]
//	 *
//	 * @param resourceFileName velocity 文件路径
//	 * @param data             velocity 渲染数据
//	 * @return
//	 */
//	public static byte[] templateParse2pdfByteArray(String templateContent, Map<String, Object> data) {
//
//		return templateParse2pdfByteArray(templateContent, data, null);
//	}
//
//	public static byte[] templateParse2pdfByteArray(String templateContent, Map<String, Object> data, String errorEmail) {
//		VelocityEngine velocityEngine = SpringUtil.getBean(VelocityEngine.class);
//
//		VelocityContext velocityContext = new VelocityContext();
//		velocityContext.put("date", new DateTool());
//		for (Map.Entry<String, Object> item : data.entrySet()
//		) {
//			velocityContext.put(item.getKey(), item.getValue());
//		}
//
//		ByteArrayOutputStream baos = new ByteArrayOutputStream();
//		StringWriter stringWriter = new StringWriter();
//		velocityEngine.evaluate(velocityContext, stringWriter, "", templateContent);
//
//		Document document = new Document();
//		try {
//			PdfWriter mPdfWriter = PdfWriter.getInstance(document, baos);
//			document.open();
//			ByteArrayInputStream bin = new ByteArrayInputStream(stringWriter.toString().getBytes());
//			XMLWorkerHelper.getInstance().parseXHtml(mPdfWriter, document, bin, Charset.defaultCharset(), new ChinaFontProvide());
//			document.close();
//
//		} catch (Exception e) {
//			log.error("templateParse2pdfByteArray发生异常", e);
////			EmailService emailService = SpringContextUtils.getBean(EmailService.class);
////			emailService.sendSimpleMail(errorEmail, "合同服务生成pdf异常(重要预警)", "HTML生成PDF异常,请马上处理!!!!");
////			// TODO 暂时未做异常处理
//			return null;
//		}
//		return baos.toByteArray();
//	}
//
//	/**
//	 * 将velocity模板进行数据渲染并转为HTML byte[]
//	 *
//	 * @param resourceFileName velocity 文件路径
//	 * @param data             velocity 渲染数据
//	 * @return
//	 */
//	public static String templateParse2HtmlByteArray(String templateContent, Map<String, Object> data) {
//
//		VelocityEngine velocityEngine = SpringUtil.getBean(VelocityEngine.class);
//
//		VelocityContext velocityContext = new VelocityContext();
//		velocityContext.put("date", new DateTool());
//		for (Map.Entry<String, Object> item : data.entrySet()
//		) {
//			velocityContext.put(item.getKey(), item.getValue());
//		}
//
//		StringWriter stringWriter = new StringWriter();
//		velocityEngine.evaluate(velocityContext, stringWriter, "", templateContent);
//		String encode = null;
//		try {
//			encode = URLEncoder.encode(stringWriter.toString(), "UTF-8");
//		} catch (Exception e) {
//
//		}
//		return encode;
//	}
//
//
//	/**
//	 * 将文件转为byte[]
//	 *
//	 * @param file 文件
//	 * @return
//	 */
//	public static byte[] FileToBytes(File file) {
//		FileInputStream fin = null;
//		BufferedInputStream bin = null;
//		ByteArrayOutputStream baos = null;
//		BufferedOutputStream bout = null;
//		try {
//			fin = new FileInputStream(file);
//			bin = new BufferedInputStream(fin);
//			baos = new ByteArrayOutputStream();
//			bout = new BufferedOutputStream(baos);
//			byte[] buffer = new byte[1024];
//			int len = bin.read(buffer);
//			while (len != -1) {
//				bout.write(buffer, 0, len);
//				len = bin.read(buffer);
//			}
//			bout.flush();
//			return baos.toByteArray();
//
//		} catch (FileNotFoundException e) {
//			e.printStackTrace();
//		} catch (IOException e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				fin.close();
//				bin.close();
//				bout.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}
//		return null;
//	}
//
//	/**
//	 * 将byte[] 转为文件
//	 *
//	 * @param bytes
//	 * @param targetPath
//	 */
//	public static void bytesToFile(byte[] bytes, String targetPath) {
//		BufferedInputStream bin = null;
//		FileOutputStream fout = null;
//		BufferedOutputStream bout = null;
//		try {
//
//			ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
//			bin = new BufferedInputStream(bais);
//			File file = new File(targetPath);
//			fout = new FileOutputStream(file);
//			bout = new BufferedOutputStream(fout);
//
//			byte[] buffers = new byte[1024];
//			int len = bin.read(buffers);
//			while (len != -1) {
//				bout.write(buffers, 0, len);
//				len = bin.read(buffers);
//			}
//			bout.flush();
//
//		} catch (IOException e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				bin.close();
//				fout.close();
//				bout.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}
//	}
//
//
//	/**
//	 * iText 中文字体
//	 */
//	private static final class ChinaFontProvide extends XMLWorkerFontProvider {
//		@Override
//		public Font getFont(final String fontName, final String encoding,
//		                    final boolean embedded, final float size, final int style,
//		                    final BaseColor color) {
//			BaseFont bf = null;
//			try {
//				bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
//						BaseFont.NOT_EMBEDDED);
//			} catch (DocumentException | IOException e) {
//				log.error("创建iText字体失败", e);
//			}
//			Font font = new Font(bf, size, style, color);
//			font.setColor(color);
//			return font;
//		}
//	}
//
//}
